Traditional techniques for analytical/numerical analysis are intrinsically not suitable for dealing with problems concerning systems characterized by high complexity and marked non-linearity. In fact, the ability to make precise and significant decisions decreases as the complexity of the system increases.
Fuzzy logic is based upon the formal principles of approximate reasoning, with the aim of modelling the capabilities peculiar to a human mind of making rational decisions in contexts characterized by uncertainty and imprecision. The alternative approach proposed by fuzzy logic is founded upon the assumption that the key elements of human thought are not numbers, but expressions that identify the so-called ‘fuzzy set’, i.e., classes of objects for which passage from membership to non-membership is not rigid, as is the case of Boolean logic, but is instead gradual.
Fuzzy logic, therefore, addresses the problem of assigning values of truth to statements for which it is not possible to unequivocally establish trueness or falseness and for which the classic two-value logic is insufficient. In other words, according to fuzzy logic, a value is not declared as belonging to a fuzzy set or otherwise, but a value is declared as belonging to a fuzzy set with a degree of activation α≦1.
The peculiarity of this logic lies in the possibility that it affords to operate on systems for which a characterization of a qualitative type, i.e., linguistic, is envisaged. The characteristics of fuzzy logic are: use of linguistic variables instead of numerical variables and relational characterization between variables through conditional proposition of a fuzzy type, called fuzzy rules.
For the above reasons, fuzzy systems are successfully used in numerous fields such as automatic control, data classification, expert systems, computer vision, and many others. Consequently, in the last few years, there has been developed a new generation of microprocessors specifically designed to solve problems linked to fuzzy logic. Once the fuzzy sets have been defined together with the respective membership functions and fuzzy rules, these microprocessors enable, given input values, calculation of the outputs of the system.
Consider, for example, two fuzzy sets A and B, which can be expressed qualitatively through expressions that define the state of a motor vehicle. For example, the fuzzy set A represents the condition “high speed” and the fuzzy set B the condition “brake pressed”. Associated to each of these two fuzzy sets A and B is a membership function, which is used for obtaining a degree of membership α of an element, which can be a value of speed or a value of pressure on the brake, of the corresponding fuzzy set.
As already mentioned, the said fuzzy sets are obtained via fuzzy rules. For example, consider the following conditional expression: “IF the speed is high, THEN the brake is to be pressed”. This expression is formalized in the following fuzzy rule: “IF x is A then y is B”, where x represents an input of the system corresponding to a value of speed, and y an output corresponding to a value of pressure to be applied on the brake. In modelling of real systems, there are a number of fuzzy sets and fuzzy rules and, via the various fuzzy operations, an output value y is obtained from an input value x.
The adoption of hardware processing modules, such as microprocessors and microcontrollers, enables storage of the membership functions and fuzzy rules in a memory and enables all the necessary operations to be performed, namely, operations of fuzzification, rules evaluation, approximate reasoning, and defuzzification. One of the main operations, which a microprocessor for fuzzy logic must perform, is, hence, calculation of the degree of truth or membership associated to a fuzzy clause.
FIG. 1 shows a diagram representing a membership function M of a triangular type, corresponding to a fuzzy set A. On the ordinate, there are represented the input values pertaining to the propositions of which the degree of truth or activation is to be evaluated, and, in particular, x represents a generic input value of the system. If “x is A” is a fuzzy phrase, the degree of activation α is given by the point of intersection between the membership function M and the straight line parallel to the ordinate axis passing through the input value x.
In FIG. 1, a lower limit of the range of definition of the input values x for the membership function M for which a degree of membership different from zero is obtained is designated by l0, and r0designates an upper limit of the range of definition of the input values x for the membership function M for which a degree of membership different from zero is obtained. In this figure, c0 is an abscissa of the maximum of the membership function M, i.e., the value of the input for which the degree of membership α is 1.
A hardware architecture which enables execution of the operations necessary to a fuzzy system is described in the European Patent Application No. 1102175, entitled: “Neuro-Fuzzy network architecture with on-line learning capabilities and corresponding control method”, which also describes the use of triangular membership functions. The triangular membership functions are to be stored in a memory, and hence, known to the art is storage of a set of solve values, which enable, with appropriate processing, reconstruction of the triangle or, more in general, of the polygon identified by the membership function. It is consequently known to store three resolution values designated respectively by l, c and r, i.e., storing, as a value of the lower limit l, a distance from the lower limit l0c0, measured between the lower limit l0 and the abscissa of the maximum c0, and moreover storing, as a value of the maximum c, the position of the abscissa of the maximum c0, and finally, storing in memory, as a value of the upper limit r, a distance from the upper limit c0r0, measured between the abscissa of the maximum c0 and the upper limit r0. Since it is known that the value of the maximum of the membership function is l, the membership function can be readily reconstructed, starting from the solve values l, c and r, via simple linear formulae.
Operating with a finite integer number N of bits, for example 10 bits, the maximum number n that can be represented by an N-bit processor is 2N-1, i.e., in the example, 210−1=1023. This entails that the distance from the lower limit l0c0 and the distance from the upper limit c0r0 cannot exceed n, i.e., 1023, so that, with an architecture of this sort it is not possible to use triangular membership functions having a distance from the lower limit or a distance from the upper limit greater than the maximum representable number n defined by the number N of bits. In other words, it is not possible to represent triangular membership functions that have a range of inputs which exceeds the limit imposed by the number of bits N with which the microprocessor operates.